import {
  MessageBox,
  Message,
  Notification
} from 'element-ui'
import validateUtil from './validateUtil'
require('es6-promise').polyfill()
const duration = 1000;

export default class dialogUtil {
  // 消息
  static successMsg(msg) {
    if (validateUtil.isNotNull(msg)) {
      return Message({
        message: msg,
        duration,
        type: 'success'
      })
    }
  }

  static warnMsg(msg) {
    if (validateUtil.isNotNull(msg)) {
      Message({
        dangerouslyUseHTMLString: true,
        message: msg,
        type: 'warning',
        duration
      })
    }
  }

  static errorMsg(msg) {
    if (validateUtil.isNotNull(msg)) {
      Message({
        message: msg,
        duration,
        type: 'error'
      })
    }
  }

  static message(msg) {
    if (validateUtil.isNotNull(msg)) {
      Message({
        message: msg,
        duration,
      })
    }
  }

  // 提示消息
  static alert(title, msg, callback) {
    MessageBox.alert(msg, title, {
      confirmButtonText: '确定',
      callback: callback
    })
  }

  static confirm(title, msg, successBack, cancelBack) {
    MessageBox.confirm(msg, title, {
      confirmButtonText: '确定',
      cancelButtonText: '取消',
      type: 'warning',
      center: true
    }).then(() => {
      successBack()
    }).catch(() => {
      cancelBack()
    })
  }

  static prompt(title, msg, format, errormsg, successBack, cancelBack) {
    MessageBox.prompt(msg, title, {
      confirmButtonText: '确定',
      cancelButtonText: '取消',
      inputPattern: format,
      inputErrorMessage: errormsg
    }).then(({
      value
    }) => {
      successBack(value)
    }).catch(() => {
      cancelBack()
    })
  }

  static notify(title, msg) {
    Notification({
      title: title,
      message: msg,
      position: 'bottom-right',
      duration
    })
  }

  static successNotify(title, msg) {
    Notification({
      title: title,
      message: msg,
      type: 'success',
      position: 'bottom-right',
      duration
    })
  }

  static warnNotify(title, msg) {
    Notification({
      title: title,
      message: msg,
      type: 'warning',
      position: 'bottom-right',
      duration
    })
  }

  static infoNotify(title, msg) {
    Notification.info({
      title: title,
      message: msg,
      position: 'bottom-right',
      duration
    })
  }

  static errorNotify(title, msg) {
    Notification.error({
      title: title,
      message: msg,
      position: 'bottom-right',
      duration
    })
  }
}